package mlz.i_proxy;


import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ProxyUtil {

    public static Star createProxy(BigStar bigStar){
        /*
            参数1: 用来指定一个类加载器
            参数2: 用来指定生成的代理张什么样子,也就是有哪些方法
            参数3: 用来指定生成的代理对象要做什么事情
         */
        //动态代理
        Star star = (Star)Proxy.newProxyInstance(
                ProxyUtil.class.getClassLoader(),
                new Class[]{Star.class},
                new InvocationHandler() {
                    @Override //回调方法
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                        //代理对象要做的事情,会写在这个方法中实现
                        if (method.getName().equals("sing")){
                            System.out.println("准备话筒,收钱~~~");
                        } else if (method.getName().equals("dance")) {
                            System.out.println("准备场地,收钱~~~");
                        }
                        return method.invoke(bigStar,args);
                    }
                });
        return star;
    }
}









